For several decades now, computer programming languages have been designed, implemented, and revised in various ways by numerous people. Programming language design is a subject of significant academic research, with substantial commercial implications. Some languages that originated in the 1950's and 1960's, such as COBOL and FORTRAN, are still widely used, whereas some other programming languages are rarely or never used today. Some programming languages have lineages spanning decades, such as the C# language, which shares some features with its ancestors C++ and C.
Sometimes aspects of a programming language are modified in response to research in computer science. For example, experimental memory models or parallel programming models may sometimes be explored, and ultimately exploited, with the help of programming languages, by using new language features or by creating new programming languages. Many of the design and implementation efforts for new aspects of programming languages focus on defining the meaning (semantics) of those aspects, and then accurately and efficiently implementing that meaning in machines. But effort may also be needed to precisely define the symbol combinations (syntax) available for expressing meaning in the programming language.